package com.abing.singleton.v3;

import java.lang.reflect.Constructor;

/**
 */
public class SingletonV3Test {
    public static void main(String[] args) throws Exception {
        // 单例基本原则；保证在单个jvm中不重复创建
        SingletonV3 singletonV1 = SingletonV3.getSingletonV3();
        //  如何去破解单例  使用java的反射技术 、序列化技术
        Constructor<SingletonV3> declaredConstructor = SingletonV3.class.getDeclaredConstructor();
        declaredConstructor.setAccessible(true);
        // 使用java的反射技术创建
        SingletonV3 singletonV2 = declaredConstructor.newInstance();
        System.out.println(singletonV1 == singletonV2);
        // 如何防御反射技术破解单例
    }
}
